<template>
  <div class="pgmain">
    <!-- 上肢功能评估量表 UEFI  -->
    <div class="pgquestionbox beautifulScroll">
      <a-form ref="formRef" :rules="formRules" :model="formModel">
        <div class="pgquestion" v-for="(item, index) in pgdata" :key="item.id">
          <a-form-item :field="String(item.id)">
            <div class="pgname">{{ item.name }}</div>
            <div class="pgchoicebox">
              <a-radio-group
                :disabled="Evaluationshow"
                v-model="formModel[item.id]"
                :options="item.des"
              ></a-radio-group>
              <!-- <div v-else>
                <a-input
                  :disabled="Evaluationshow"
                  :style="{ width: '320px' }"
                  v-model="formModel[item.id]"
                  placeholder="备注"
                  allow-clear
                />
              </div> -->
            </div>
          </a-form-item>
        </div>
      </a-form>
    </div>
    <div class="pgckbox beautifulScroll">
      <img
        ref="nativeImg"
        src="@/assets/images/huodong.png"
        style="display: none"
      />
      <!-- <img src="@/assets/images/guanjieyan.png" alt="" class="pgckboximg" /> -->
      <a-image class="pgckzz" :src="nativeImg?.src" />
    </div>
  </div>
</template>

<script lang="ts" setup>
  import { ref } from 'vue';
  import { saveEvaluation } from '@/api/pingu';
  const nativeImg = ref<HTMLImageElement | null>(null);
  const title = ref('ICF活动和参与评价量表');
  const props = defineProps({
    // 定义patientTreatmentId属性，指定类型为字符串
    patientTreatmentId: {
      type: String,
      required: true, // 如果父组件必须传递该属性，可设为true
      // 可选：设置默认值（当required为false时生效）
      // default: 'default-id'
    },
    Evaluationshow: {
      type: Boolean,
    },
    Evaluationdata: {
      type: Object,
    },
  });
  const Evaluationshow = ref(props.Evaluationshow);
  const patientTreatmentId = ref(props.patientTreatmentId);
  const Evaluationdata = ref(props.Evaluationdata);
  const pgdata = [
    {
      id: 1,
      name: '1、集中注意力做事情（理解交流）',
      des: [
        { label: '能够完成，无障碍', value: '1' },
        { label: '有不集中，不影响生活', value: '2' },
        { label: '时常不集中，影响生活', value: '3' },
        { label: '经常出现，严重影响生活', value: '4' },
        { label: '不能完成', value: '5' },
      ],
    },
    {
      id: 2,
      name: '2、对重要事情的记忆能力（理解交流）',
      des: [
        { label: '无记忆障碍', value: '1' },
        { label: '有时遗忘不影响生活', value: '2' },
        { label: '时常出现稍影响生活', value: '3' },
        { label: '经常遗忘，严重影响生活', value: '4' },
        { label: '完全无法记住重要事情', value: '5' },
      ],
    },
    {
      id: 3,
      name: '3、分析并解决日常生活问题（理解交流）',
      des: [
        { label: '独立解决', value: '1' },
        { label: '偶尔出现问题不影响生活', value: '2' },
        { label: '时常不集中，影响生活', value: '3' },
        { label: '经常出现，严重影响生活', value: '4' },
        { label: '完全无法解决', value: '5' },
      ],
    },
    {
      id: 4,
      name: '4、学习一项新任务（理解交流）',
      des: [
        { label: '独立完成学习任务', value: '1' },
        { label: '可基本完成，偶尔出现问题', value: '2' },
        { label: '需他人协助，进度慢', value: '3' },
        { label: '必须他人协助，学习效果差', value: '4' },
        { label: '很难或不能完成', value: '5' },
      ],
    },
    {
      id: 5,
      name: '5、大致理解他人表达内容（理解交流）',
      des: [
        { label: '完全理解', value: '1' },
        { label: '基本理解，偶尔出现问题', value: '2' },
        { label: '时常出现问题，影响生活', value: '3' },
        { label: '经常出现问题，严重影响生活', value: '4' },
        { label: '通过任何方式都不能理解他人表达的 内容', value: '5' },
      ],
    },
    {
      id: 6,
      name: '6、主动与他人交谈（理解交流）',
      des: [
        { label: '完全能够', value: '1' },
        { label: '基本可，偶有障碍', value: '2' },
        { label: '时常出现反应迟纯，影响生活', value: '3' },
        { label: '经常出现反应迟钝，影响生活； ', value: '4' },
        { label: '完全无法与人交谈', value: '5' },
      ],
    },
    {
      id: 7,
      name: '7、长时间站立30分钟（身体活动）',
      des: [
        { label: '独立完成站立', value: '1' },
        { label: '间或有站立姿势', value: '2' },
        { label: '需借助器具或在他人监护下站立', value: '3' },
        { label: '必须借助器具或在他人协助下站立', value: '4' },
        { label: '完全不能站立', value: '5' },
      ],
    },
    {
      id: 8,
      name: '8、坐下后站起（身体活动）',
      des: [
        { label: '可以独立完成', value: '1' },
        { label: '需在他人语言指导或监护下完成', value: '2' },
        { label: '需他人小部分协助', value: '3' },
        { label: '需他人大量协助', value: '4' },
        { label: '不能完成', value: '5' },
      ],
    },
    {
      id: 9,
      name: '9、在住所内移动（身体活动）',
      des: [
        { label: '独立在室内移动', value: '1' },
        { label: '需在他人监护下完成', value: '2' },
        { label: '偶需借助器具或他人协助下完成', value: '3' },
        { label: '经常需借助器具或他人协助下完成', value: '4' },
        { label: '无法完成', value: '5' },
      ],
    },
    {
      id: 10,
      name: '10、长距离步行1千米（身体活动）',
      des: [
        { label: '独立完成', value: '1' },
        { label: '不能完成1千米或需人从旁监护 ， 以保证安全', value: '2' },
        { label: '完成一部分，某些过程需借助器具或 他人协助', value: '3' },
        {
          label: '某种程度上能参与，整个过程需借助 器具或他人协助',
          value: '4',
        },
        { label: '完全不能步行', value: '5' },
      ],
    },
    {
      id: 11,
      name: '11、在住所外移动（身体活动）',
      des: [
        { label: '能独立外出', value: '1' },
        { label: '偶需在他人监护下外出', value: '2' },
        { label: '经常在他人协助下外出', value: '3' },
        { label: '必须在他人协助下外出', value: '4' },
        { label: '因健康问题导致无法外出', value: '5' },
      ],
    },
    {
      id: 12,
      name: '12、搬运、移动和操纵锤子、扳手、起子等（身体活动）',
      des: [
        { label: '独立完成', value: '1' },
        { label: '基本可，偶有问题', value: '2' },
        { label: '偶尔需他人协助', value: '3' },
        { label: '必须在他人协助下完成', value: '4' },
        { label: '无法完成', value: '5' },
      ],
    },
    {
      id: 13,
      name: '13、洗澡（自我照护）',
      des: [
        { label: '独立完成', value: '1' },
        { label: '可完成，偶有过程需他人协助或他人从旁监护', value: '2' },
        { label: '能参与大部分，某些过程必须由他人协助才能完成', value: '3' },
        {
          label: '某种程度上能参与，但整个过程必须 由他人协助才能完成',
          value: '4',
        },
        { label: '全部依赖他人完成', value: '5' },
      ],
    },
    {
      id: 14,
      name: '14、穿着（自我照护）',
      des: [
        { label: '独立完成', value: '1' },
        { label: '可完成，偶有过程需他人协助或他人从旁监护', value: '2' },
        { label: '能参与大部分，某些过程必须由他人协助才能完成', value: '3' },
        {
          label: '某种程度上能参与，但整个过程必须 由他人协助才能完成',
          value: '4',
        },
        { label: '全部依赖他人完成', value: '5' },
      ],
    },
    {
      id: 15,
      name: '15、进食（自我照护）',
      des: [
        { label: '独立进食', value: '1' },
        { label: '可完成，偶需他人从旁协助', value: '2' },
        { label: '能使用餐具，某些过程必须由他人协助才能完成', value: '3' },
        {
          label: '某种程度下能使用餐具，但整个过程 必须由他人协助才能完成',
          value: '4',
        },
        { label: '主要由他人喂食', value: '5' },
      ],
    },
    {
      id: 16,
      name: '16、独立生活一天及以上（自我照护）',
      des: [
        { label: '独立生活', value: '1' },
        { label: '基本可，偶有问题', value: '2' },
        { label: '偶尔需他人协助完成', value: '3' },
        { label: '经常需他人协助完成', value: '4' },
        { label: '必须由他人协助且不主动配合', value: '5' },
      ],
    },
    {
      id: 17,
      name: '17、身体护理（自我照护）',
      des: [
        { label: '独立完成', value: '1' },
        { label: '可完成，偶有过程需他人协助或他人从旁监护', value: '2' },
        { label: '能参与大部分，某些过程必须由他人协助才能完成', value: '3' },
        {
          label: '某种程度上能参与，但整个过程必须由他人协助才能完成；',
          value: '4',
        },
        { label: '全部依赖他人完成', value: '5' },
      ],
    },
    {
      id: 18,
      name: '18、如厕（自我照护）',
      des: [
        { label: '独立完成', value: '1' },
        { label: '需协助及定时提醒', value: '2' },
        { label: '间断失禁 ， 部分过程由他人协助完成', value: '3' },
        { label: '经常失禁 ， 如厕过程由他人协助完成；', value: '4' },
        { label: '完全失禁，如厕全部依赖他人', value: '5' },
      ],
    },
    {
      id: 19,
      name: '19、与陌生人相处（与人相处）',
      des: [
        { label: '无交往障碍', value: '1' },
        { label: '有障碍但无影响', value: '2' },
        { label: '时常有障碍，需人协助', value: '3' },
        { label: '经常有障碍必须有人协助', value: '4' },
        { label: '不会或不能与人相处', value: '5' },
      ],
    },
    {
      id: 20,
      name: '20、结交新朋友（与人相处）',
      des: [
        { label: '完全能结交', value: '1' },
        { label: '可有困难但仍可建立友谊', value: '2' },
        { label: '较困难需人协助', value: '3' },
        { label: '非常困难必须他人协助', value: '4' },
        { label: '无法结新朋友', value: '5' },
      ],
    },
    {
      id: 21,
      name: '21、维持友情（与人相处）',
      des: [
        { label: '独立交往，行为适当', value: '1' },
        { label: '有困难，无影响', value: '2' },
        { label: '经常有困难，需人协助纠正行为', value: '3' },
        { label: '社会行为不当，必须由他人协助', value: '4' },
        { label: '完全不能保持、终止友谊，社交距离 不当', value: '5' },
      ],
    },
    {
      id: 22,
      name: '22、与亲属建立并维持家庭关系（与人相处）',
      des: [
        { label: '能独立相处', value: '1' },
        { label: '偶尔出现障碍', value: '2' },
        { label: '时常出现障碍，需人协助', value: '3' },
        { label: '经常出现障碍，必须他人协助', value: '4' },
        { label: '完全不能与人相处', value: '5' },
      ],
    },
    {
      id: 23,
      name: '23、与配偶或其他伴侣建立并维持亲密关系（与人相处）',
      des: [
        { label: '无障碍', value: '1' },
        { label: '轻度障碍', value: '2' },
        { label: '中度障碍', value: '3' },
        { label: '重度障碍', value: '4' },
        { label: '不能完成', value: '5' },
      ],
    },
    {
      id: 24,
      name: '24、建立正式社会人际关系（与人相处）',
      des: [
        { label: '独立建立并维持正式社会关系', value: '1' },
        { label: '有障碍，无影响', value: '2' },
        { label: '时常有障碍，需人协助', value: '3' },
        { label: '经常有障碍，必须他人协助', value: '4' },
        { label: '完全不能建立正式社会关系', value: '5' },
      ],
    },
    {
      id: 25,
      name: '25、担负家庭责任（生活活动）',
      des: [
        { label: '独立承担家庭责任', value: '1' },
        { label: '偶尔出现问题，不影响', value: '2' },
        { label: '时常出现问题， 需人协助', value: '3' },
        { label: '经常出现问题，难以胜任', value: '4' },
        { label: '完全无法承担家庭责任', value: '5' },
      ],
    },
    {
      id: 26,
      name: '26、很好的完成最重要的家务（生活活动）',
      des: [
        { label: '独立完成', value: '1' },
        { label: '基本完成，高难度任务不能完成', value: '2' },
        { label: '时常有困难，需人协助', value: '3' },
        { label: '经常出现困难，必须他人协助', value: '4' },
        { label: '无法完成最重要的家务', value: '5' },
      ],
    },
    {
      id: 27,
      name: '27、完成所有需要做的家务（生活活动）',
      des: [
        { label: '独立完成', value: '1' },
        { label: '完成75%以上 ，高难度任务不能完成', value: '2' },
        { label: '完成50%以上， 需人协助', value: '3' },
        { label: '完成25%以上，必须他人协助', value: '4' },
        { label: '无法完成', value: '5' },
      ],
    },
    {
      id: 28,
      name: '28、按照需要完成家务的时效（生活活动）',
      des: [
        { label: '独立按时完成，达到预期要求', value: '1' },
        { label: '基本按时完成，效果欠佳', value: '2' },
        { label: '无法按时完成，需人协助', value: '3' },
        { label: '耗费时间久，必须他人协助', value: '4' },
        { label: '无法完成', value: '5' },
      ],
    },
    {
      id: 29,
      name: '29、担负日常工作或学习责任（生活活动）',
      des: [
        { label: '独立完成', value: '1' },
        { label: '存在困难，通过努力能克服', value: '2' },
        { label: '时常存在困难，需人协助', value: '3' },
        { label: '经常存在困难，必须他人协助', value: '4' },
        { label: '无法完成', value: '5' },
      ],
    },
    {
      id: 30,
      name: '30、很好地完成大多数重要的工作或学习（生活活动）',
      des: [
        { label: '独立、按标准很好的完成任务', value: '1' },
        { label: '完成效果达到考核标准的75%', value: '2' },
        { label: '完成效果达到考核标准的50%', value: '3' },
        { label: '完成效果达到考核标准的20%', value: '4' },
        { label: '无法完成重要的任务', value: '5' },
      ],
    },
    {
      id: 31,
      name: '31、完成您份内的所有工作（生活活动）',
      des: [
        { label: '独立完成', value: '1' },
        { label: '完成 75% 以上，高难度任务不能完成', value: '2' },
        { label: '完成50%，需人协助', value: '3' },
        { label: '完成25%以上，必须他人协助', value: '4' },
        { label: '无法完成', value: '5' },
      ],
    },
    {
      id: 32,
      name: '32、按照需要完成工作的时效（生活活动）',
      des: [
        { label: '独立按时完成，达到预期要求', value: '1' },
        { label: '基本按时完成，效果欠佳', value: '2' },
        { label: '无法按时完成，需人协助', value: '3' },
        { label: '耗费时间久，必须他人协助', value: '4' },
        { label: '无法完成', value: '5' },
      ],
    },
    {
      id: 33,
      name: '33、参加社区和社会活动的困难程度（社会参与）',
      des: [
        { label: '完全没有障碍', value: '1' },
        { label: '可参加活动有不便但可克服', value: '2' },
        { label: '可参加活动有很多不便，需人协助', value: '3' },
        { label: '不能参加大多活动，必须他人协助', value: '4' },
        { label: '完全不能参加活动', value: '5' },
      ],
    },
    {
      id: 34,
      name: '34、参加娱乐休闲活动的困难程度（社会参与）',
      des: [
        { label: '完全没有障碍', value: '1' },
        { label: '可参加活动有不便，但能克服', value: '2' },
        { label: '可参加大部分娱乐和休闲活动，偶有困难', value: '3' },
        { label: '可参加少部分娱乐和休闲活动，经常有困难', value: '4' },
        { label: '完全不能参加娱乐和休闲活动', value: '5' },
      ],
    },
    {
      id: 35,
      name: '35、周围环境阻碍和限制您参加活动的（社会参与）',
      des: [
        { label: '没有障碍', value: '1' },
        { label: '基本没有障碍即使有也能克服', value: '2' },
        { label: '少部分障碍，需人协助', value: '3' },
        { label: '经历很多障碍，必须他人协助才能克服', value: '4' },
        { label: '严重障碍影响生活', value: '5' },
      ],
    },
    {
      id: 36,
      name: '36、他人态度及行为对您尊严生活的影响程度（社会参与）',
      des: [
        { label: '无影响', value: '1' },
        { label: '有消极影响但可通过努力克服', value: '2' },
        { label: '有较大影响，偶需人协助克服', value: '3' },
        { label: '有严重影响，必须他人协助克服', value: '4' },
        { label: '有极严重影响，无法生活', value: '5' },
      ],
    },
    {
      id: 37,
      name: '37、健康问题对您情绪的影响程度（社会参与）',
      des: [
        { label: '无影响', value: '1' },
        { label: '有影响，但可通过自己努力克服', value: '2' },
        { label: '有较大影响，需要寻求他人等帮助来克服', value: '3' },
        { label: '有严重影响，必须通过药物或专业机构等帮助', value: '4' },
        { label: '有极严重影响，无法克服', value: '5' },
      ],
    },
    {
      id: 38,
      name: '38、处理健康问题或其影响方面的时间成本（社会参与）',
      des: [
        { label: '无影响', value: '1' },
        { label: '在过去30天中 ，有25%的时间花费在健康问题上', value: '2' },
        { label: '在过去的30天中 ，有50%的时间花费在健康问题上', value: '3' },
        { label: '在过去的30天中 ，有75%的时间花费在健康问题上', value: '4' },
        { label: '在过去的30天，时间完全花费在健康问题上', value: '5' },
      ],
    },
    {
      id: 39,
      name: '39、健康问题造成整个家庭的经济损失程度（社会参与）',
      des: [
        { label: '无经济损失', value: '1' },
        { label: '25%以上的经济损失，能克服影响', value: '2' },
        { label: '50%以上的经济损失', value: '3' },
        { label: '75%以上的经济损失', value: '4' },
        { label: '完全断绝经济来源', value: '5' },
      ],
    },
    {
      id: 40,
      name: '40、健康问题产生的家庭困难程度（社会参与）',
      des: [
        { label: '对家庭无影响；', value: '1' },
        { label: '对家庭稍有影响，能克服影响', value: '2' },
        { label: '对家庭有影响， 需外界帮助', value: '3' },
        { label: '严重影响家庭，必须依靠外界帮助来维持生活', value: '4' },
        { label: '极严重影响家庭，无法解决', value: '5' },
      ],
    },
  ];
  // 评估名称

  const formRef = ref();
  const formModel = ref<Record<string, string>>({});
  const formRules: Record<string, any[]> = {};

  pgdata.forEach((item) => {
    formModel.value[item.id] = '';
    formRules[item.id] = [
      { required: true, message: '必填', trigger: 'change' },
    ];
  });
  if (Evaluationdata.value && Object.keys(Evaluationdata.value).length > 0) {
    // 只有当Evaluationdata.value存在且不是空对象时才赋值
    formModel.value = { ...Evaluationdata.value };
    console.log('查看模式回显的数据处理完成', formModel.value);
  }
  const scoresSum = ref(0);
  // 计算总和的方法
  const calculateSum = () => {
    let sum = 0;

    // 1. 先获取所有type='tk'的项的id（转为字符串，与表单键名匹配）
    const tkItemIds = pgdata
      .filter((item: any) => item.type === 'tk')
      .map((item) => item.id.toString());

    // 2. 遍历表单数据，排除tk项和空值
    Object.entries(formModel.value).forEach(([key, value]) => {
      // 跳过条件：是tk项 或 值为空
      if (tkItemIds.includes(key) || value == '' || value == undefined) {
        return;
      }

      // 累加有效数值
      sum += Number(value);
    });

    scoresSum.value = sum;
    console.log('当前成绩', scoresSum.value);
  };

  //提交评估表
  const submitPg = () => {
    // 返回Promise以便父组件捕获状态
    return new Promise((resolve, reject) => {
      formRef.value.validate((errors: any) => {
        if (!errors) {
          // 初始计算一次
          calculateSum();

          saveEvaluation({
            patientTreatmentId: patientTreatmentId.value,
            evaluation: JSON.stringify(formModel.value),
            title: title.value,
            score: scoresSum.value,
          })
            .then((res: any) => {
              if (res.code == 200) {
                console.log('提交评估成功', res.data);
                resolve(res.data); // 成功时返回数据
              } else {
                // 接口返回非200状态视为失败
                reject(new Error(`提交失败: ${res.msg || '未知错误'}`));
              }
            })
            .catch((error: any) => {
              // 捕获接口调用异常
              console.error('提交评估失败', error);
              reject(new Error(`网络错误: ${error.message}`));
            });
        } else {
          // 表单验证失败
          reject(new Error('表单验证失败，请检查输入'));
        }
      });
    });
  };
  defineExpose({
    submitPg,
  });
</script>

<style scoped>
  .pgmain {
    height: 100%;
    display: flex;
  }
  .pgckbox {
    height: 600px;
    width: 600px;
    overflow: hidden;
    overflow-y: auto;
  }

  :deep(.pgckzz .arco-image-img) {
    width: 590px;
    height: 3517px;
    cursor: pointer;
  }
  .pgquestionbox {
    width: 600px;
    display: flex;
    flex-direction: column;
    overflow-y: auto;
    height: 600px;
  }
  .pgckboximg {
    width: 590px;
    height: 1301px;
    position: absolute;
    top: 0px;
    left: 0px;
    cursor: pointer;
  }
  .pgquestion {
    display: flex;
  }
  .pgname {
    font-size: 18px;
  }
  .pgchoicebox {
    display: flex;
    flex-direction: column;
    font-size: 18px;
    margin-top: 10px;
  }
  :deep(.pgchoicebox .arco-radio-label) {
    font-size: 18px !important;
  }

  :deep(.pgquestionbox .arco-form-item-content-flex) {
    flex-direction: column !important;
    align-items: normal !important;
    justify-content: normal !important;
  }

  :deep(.pgquestionbox .arco-col-5) {
    flex: 0 !important;
    width: 0 !important;
  }
  :deep(.pgquestionbox .arco-radio-group) {
    display: flex;
    flex-direction: column;
  }
  :deep(.arco-radio) {
    margin: 6px 0;
  }
</style>
